package leetcode.hot100;

@SuppressWarnings("all")
public class _121_买卖股票的最佳时机 {

    // 给定一个数组 prices ，它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格
    // 你只能选择 某一天 买入这只股票，并选择在 未来的某一个不同的日子 卖出该股票
    // 设计一个算法来计算你所能获取的最大利润，如果你不能获取任何利润，返回 0
    public int maxProfit(int[] prices) {
        if (prices == null || prices.length == 0) return 0;
        // 要获得最大的利润，那么最理想的状态就是在股票最低时买入，在股票最高时卖出

        // 开盘日子里股票买入的最低价格
        int lowest = prices[0];
        // 开盘日子里能得到的最大利润
        int maxProfit = 0;
        for (int i = 1; i < prices.length; i++) {
            // 在第i天卖出所得最大利润
            maxProfit = Math.max(prices[i] - lowest, maxProfit);
            // 开盘到第i天历史最低的卖入价格
            lowest = Math.min(prices[i], lowest);
        }
        return maxProfit;
    }
}
